package com.wxh.multithread;

/**
 * @ClassName: TestStopThread
 * @Description: 测试停止线程
 * @Author wxh
 * @Date: 2021/12/30 10:41
 * @Version V1.0.0
 * @Since 1.8
 */
public class TestStopThread implements Runnable {


    /**
     *  停止线程：
     *   1. 建议线程正常停止
     *   2. 使用标志位
     *   3. 不要使用stop或destroy
     * @param args
     */
    public static void main(String[] args) {
        TestStopThread testStopThread = new TestStopThread();

        new Thread(testStopThread).start();

        for (int i = 0; i < 1000; i++) {
            System.out.println("main "+i);
            if(i == 900){
                testStopThread.stop();
                System.out.println("线程已经停止");
            }
        }
    }

    /**
     * 1.一个标志位
     */
    private boolean flag = true;

    @Override
    public void run() {
        int i = 0;
        while (flag){
            System.out.println("run .... Thread "+ (i++));
        }
    }

    /**
     * 2. 设置一个公开方法，转换标志位
     */
    public void stop(){
        this.flag = false;
    }
}
